package dssd.servicios;

import java.rmi.RemoteException;
import java.util.Date;

import dssd.clienteWS.SiniestroProxy;
import dssd.dao.LicenciasDao;
import dssd.modelo.Licencia;
import dssd.modelo.Solicitud;
import dssd.modelo.SolicitudAlta;
import dssd.modelo.SolicitudRenovacion;
import dssd.modelo.Usuario;

public class LicenciasService extends AbstractService implements ILicenciasService{
	
	private static final String HOST = "webservice.host";
	private static final String PORT = "webservice.puerto";
	private static final String CONTEXT = "webservice.contexto";
	private LicenciasDao licenciasDao;
	
	public LicenciasDao getLicenciasDao() {
		return licenciasDao;
	}

	public void setLicenciasDao(LicenciasDao licenciasDao) {
		this.licenciasDao = licenciasDao;
	}

	/* (non-Javadoc)
	 * @see dssd.servicios.ILicenciasServices#actualizarSolicitud(dssd.seguridad.Usuario, dssd.modelo.Solicitud)
	 */
	public Solicitud actualizarSolicitud(Usuario usuario, Solicitud solicitud){
		return this.getLicenciasDao().actualizarSolicitud(solicitud);
	}
	
	
	/* (non-Javadoc)
	 * @see dssd.servicios.ILicenciasServices#consultarInfracciones(dssd.seguridad.Usuario, java.lang.String)
	 */
	public int consultarInfracciones(Usuario usuario, String dni){
		SiniestroProxy service = new SiniestroProxy();
		int contador = -1;
		String host = System.getProperty(HOST);
		String port = System.getProperty(PORT);
		String context = System.getProperty(CONTEXT);
		service.setEndpoint("http://"+host+":"+port+"/"+context+"?wsdl");
		try {
			contador = service.realizoInfracciones(dni);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return contador;
	}

	/* (non-Javadoc)
	 * @see dssd.servicios.ILicenciasServices#guardar(dssd.seguridad.Usuario, dssd.modelo.SolicitudRenovacion)
	 */
	public SolicitudRenovacion guardarSolicitud(Usuario usuario, SolicitudRenovacion solicitud) {
		return (SolicitudRenovacion) this.getLicenciasDao().guardar(solicitud);
		
	}

	@Override
	public SolicitudAlta guardarSolicitud(Usuario usuario, SolicitudAlta solicitud) {
		return (SolicitudAlta) this.getLicenciasDao().guardar(solicitud);
	}

	@Override
	public Licencia otorgarLicencia(Usuario usuario, Solicitud solicitud) {
		Licencia licencia = new Licencia(new Date());
		solicitud.setLicencia(licencia);
		this.getLicenciasDao().actualizarSolicitud(solicitud);
		return licencia;
	}
	
}
